home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
011-020
/
amok16
/
memsystem
/
errorreq.mod
< prev
next >
Wrap
Text File
|
1993-11-04
|
2KB
|
82 lines
(**********************************************************************
:Program. ErrorReq.mod
:Contents. Requesters or Messages to handle Errors, Warnings...
:Author. Nicolas Benezan [bne]
:Address. Postwiesenstr. 2, D7000 Stuttgart 60
:Phone. 711/333679
:Copyright. Public Domain
:Language. Modula-2
:Translator. M2Amiga AMSoft 3.2d
:History. V1.0b [bne] 27.Jan.1989 (extracted from MemSystem1.1)
:History. V1.1a [bne] 27.Jan.1989 (YesNoReq. modified, m2cV3.2)
:History. V1.2b [bne] 12.Feb.1989 (+ Assert)
:History. V1.3a [bne] 22.Mar.1989 (bug fixed)
**********************************************************************)
IMPLEMENTATION MODULE ErrorReq;
FROM SYSTEM IMPORT ADDRESS, ADR;
FROM Arts IMPORT Terminate, CurrentLevel, Requester, wbStarted;
FROM Dos IMPORT Write, Output;
FROM Str IMPORT Length, Concat, Copy;
IMPORT ASCII;
CONST ReqWidth=320;
ReqHeight=72;
VAR LineFeed:ARRAY [0..0] OF CHAR;
PROCEDURE YesNoRequest(BodyText,PositiveText,NegativeText:ADDRESS):BOOLEAN;
BEGIN
RETURN Requester(ADR(ErrHeader),BodyText,PositiveText,NegativeText);
END YesNoRequest;
PROCEDURE RecoverableExit(ReqBody,PosText,NegText:ADDRESS);
BEGIN
IF NOT YesNoRequest(ReqBody,PosText,NegText) THEN
ExitQuiet;
END;
END RecoverableExit;
PROCEDURE DeadEndExit(ReqBody:ADDRESS);
VAR Dummy:BOOLEAN;
BEGIN
Dummy:=YesNoRequest(ReqBody,NIL,ADR(ABORT));
ExitQuiet;
END DeadEndExit;
(**)
(* Assert CLI: writes message to current window WB: Requester *)
(**)
PROCEDURE Assert(Condition:BOOLEAN;Text:ADDRESS);
TYPE String=ARRAY [0..80] OF CHAR;
VAR Dummy:LONGINT;
TextPtr:POINTER TO String;
Line:String;
BEGIN
IF NOT Condition THEN
IF wbStarted THEN
DeadEndExit(Text);
ELSE
TextPtr:=Text;
Copy(Line,AssertMessage);
Concat(Line,TextPtr^);
Concat(Line,LineFeed);
Dummy:=Write(Output(),ADR(Line),Length(Line));
ExitQuiet;
END;
END;
END Assert;
PROCEDURE ExitQuiet;
BEGIN
Terminate(CurrentLevel());
END ExitQuiet;
BEGIN
ErrHeader:="Modula-2 Error Handler";
AssertMessage:="Break (Assert): ";
LineFeed:=ASCII.lf;
END ErrorReq.